/******************************************************************************
 *      Mestrado em Ciência da Computação - UFMS
 *		Redes de Computadores - Prof. Dr. Ronaldo Alves Ferreira
 *		Alunos: Geraldo Landre, Marcel Tolentino, Vinícius Bueno
 *****************************************************************************/

#ifndef INTERFACE_H
#define INTERFACE_H

#include <stdio.h>
#include <signal.h>

#include "multi_server.h"
#include "threaded_server.h"
#include "cache.h"

/*
	Funções responsáveis por:
		- Tratamento da chamada do webserver por linha de comando
		- Configuração do webserver de acordo com os parâmetros do arquivo de configuração
*/

#define CONF_DEFAULT "/home/vinicius/Mestrado/proxy/webserver.conf"

/*******************************************************************************
 * DEFINES começando com p para indicar que são parametros do arquivo de
 * configuração, valores default para cada um em config.h
 ******************************************************************************/
#define P_PORT                "Port:"
#define P_THREADS             "Threads:"
#define P_FILE_DEFAULT        "File Default:"
#define P_SERVER_DIRECTORY    "Server Directory:"
#define P_CGI_BIN_DIRECTORY   "CGI-BIN Directory:"
#define P_CACHE_DIRECTORY     "Cache Directory:"
#define P_CACHE_SIZE_L1       "Cache Size Level1:"
#define P_CACHE_SIZE_L2       "Cache Size Level2:"
#define P_ACCESS_LIST         "Access List:"

/* trata a interrupção Crtl + C e a maneira como o servidor deve reagir ao sinal */
void func_interruption(int);

/* obtem as configurações do arquivo de configuração e atribui aos parâmetros do servidor */
void configure_webserver(vstring *conf);

/* manipula a linha de comando para chamar o servidor */
void cmdl_handling(int argc, char* argv[]);	

/* inicia a execução do servidor */
void start(int argc, char* argv[]);

#endif
